# -*- coding: utf-8 -*-
"""
Created on Fri Aug  4 10:31:05 2023

@author: skunk69
"""

import json

chinese_name = u'儿童青少年心理健康量表'
english_name = 'Mental Health Scale for Child and Adolescent'
abbreviation = 'MHS-CA'
category = u'一般心理健康与行为问题量表'

outline = u"""儿童青少年心理健康量表（Mental Health Scale for Child and Adolescent, MHS-CA）是在借鉴国内外儿童心理健康评定研究基础上，按照心理测量学原理编制的，从24个方面去观察儿童和青少年的心理健康状况，既反映心理过程，也反映心理特征。"""

instruction = u"""这是一份心理健康调查表，从24个方面评定你的心理健康状况，每个方面有7个等级，请你仔细阅读每一条，判断每条所描述的情况与你实际情况的符合程度，选择一个最合适的等级。你一定要仔细看，认真选择，以反映你的真实情况。"""

with open('MHS-CA.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
rating = []
for i in range(0,len(lines),8):
    key = i//8+1
    line = lines[i].strip().split('、')
    items[key] = line[-1]
    
    rating_lines = [line.strip() for line in lines[i+1:i+8]]
    rating.append({key+1:line for key,line in enumerate(rating_lines)})
        
reverse_items = []
scales = [u'认知维度',u'思维维度',u'情绪维度',u'意志行为',u'个性维度']
scales_items = [
    [1,2,3,9,23],# 1 认知维度
    list(range(4,9)),# 2 思维维度
    list(range(16,19)),# 3 情绪维度
    list(range(19,23))+[24],# 4 意志行为
    list(range(10,16)),# 5 个性维度
    ]

check = []
for l in scales_items:
    check = check+l
print(len(check))
check_set = {i for i in sorted(check)}-{i for i in range(1,25)}
print(check_set)

factors = []
factors_scales = []
score_rules = list(range(7,0,-1))

implementation = u"""该量表系评定量表，小学生由父母与孩子共同讨论填写，中学生可以自己填写，也可以与父母讨论填写。在每个条目下只选择一个与自己（孩子）情况最相符的状态描述。"""
reliability = u"""内部一致性和重测信度比较理想。"""
validity = u"""常模样本来源于全国12个省（自治区）。结构效度与实证效度良好。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""（1）条目计分：条目分按照7个等级计分，即对被试选择的描述进行等级计分。每个等级的意义分别为：7=过度性病理行为，6=过度性神经质行为，5=高健康行为，4=一般健康行为，3=低健康行为，2=缺失性神经质行为，1=缺失性病理行为。1和7属于疾病状态，2和6属于亚健康状态，3~5属于健康状态。
（2）分量表分和总分计分：在计算分量表分和总分时采用5级评分，即就是，先对条目原始等级进行转换，将原条目计分中的7分（过度性病理行为）改计为1分，6分（过度性神经质行为）改计为2分，原等级1分（缺失性病理行为）、2分（缺失性神经质行为）以及其他等级（3~5分）不变。新生成的5个等级的意义分别为：5分为高健康状态，4分为一般健康状态，3分为低健康状态，2分为亚健康状态，1分为疾病状态。然后将相应的条目相加，获得量表分和总分。"""

applications = u"""根据常模样本制定了儿童青少年心理健康量表各维度5种健康状态常模。
（1）认知维度：高健康状态（21~25），较好健康状态（17~20），一般健康状态（11~16），亚健康状态（8~10），疾病状态（5~7）。
（2）思维维度：高健康状态（22~25），较好健康状态（19~21），一般健康状态（13~18），亚健康状态（9~12），疾病状态（5~8）。
（3）个性维度：高健康状态（22~25），较好健康状态（18~21），一般健康状态（12~17），亚健康状态（8~11），疾病状态（5~7）。
（4）情绪维度：高健康状态（14~15），较好健康状态（11~13），一般健康状态（7~10），亚健康状态（5~6），疾病状态（3~4）。
（5）意志行为：高健康状态（27~30），较好健康状态（22~26），一般健康状态（14~21），亚健康状态（10~13），疾病状态（6~9）。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':{
        'instruction':instruction,
        'items':items,
        'reverse_items':reverse_items,
        'scales':scales,
        'scales_items':scales_items,
        'factors':factors,
        'factors_scales':factors_scales,
        'rating':rating,
        'score_rules':score_rules        
                },
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)



